// 3-4 数据结构-指向结构的指针
/**
 * C++ 数据结构
 * C/C++ 数组允许定义可存储相同类型数据项的变量，但是结构是 C++ 中另一种用户自定义的可用的数据类型，它允许您存储不同类型的数据项。
 * 结构用于表示一条记录，假设您想要跟踪图书馆中书本的动态，您可能需要跟踪每本书的下列属性：
      Title ：标题
      Author ：作者
      Subject ：类目
      Book ID ：书的 ID
 * 
 * ---------------
 * 指向结构的指针
 * 您可以定义指向结构的指针，方式与定义指向其他类型变量的指针相似，如下所示：
    
    struct Books *struct_pointer;
    
 * 现在，您可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址，请把 & 运算符放在结构名称的前面，如下所示：
 
    struct_pointer = &Book1;

 * 为了使用指向该结构的指针访问结构的成员，您必须使用 -> 运算符，如下所示：

    struct_pointer->title;

  * 让我们使用结构指针来重写上面的实例，这将有助于您理解结构指针的概念：
*/
#include <iostream>
#include <string.h>
#include <ctime>

struct Employee
{
  int id;
  char name[50];
  int sex;
  int age;
};

void print_emp(struct Employee *);
int main(void)
{
  /**
   * 示例一
  */

  Employee emp;

  emp.id = 1;
  strcpy(emp.name, "木木");
  emp.sex = 1;
  emp.age = 18;

  // print_emp(&emp);
  struct Employee *ptr = &emp;
  print_emp(ptr);

  printf("-----------end------------\n");
  // system("pause");
  return 0;
}

void print_emp(struct Employee *emp)
{
  std::cout << "--------人员信息-------"
            << "\n"
            << "id : " << emp->id << "\n"
            << "姓名 : " << emp->name << "\n"
            << "性别 : " << (emp->sex ? "男" : "女")
            << "\n"
            << "年龄 : " << emp->age << std::endl;
}